import axios from 'axios';
//1.新建axios实例
import router from '../router/index'
const instance = axios.create({
  baseURL: 'http://192.168.1.54:8081/m.api',//url
  timeout: 3000//请求超时
});

// 2.拦截器的配置
// 2.1 请求拦截
// 添加请求拦截器
instance.interceptors.request.use(config =>{
    // 在发送请求之前做些什么
	// 给每个请求添加token
	config.headers['AdminToken'] = sessionStorage.getItem("token");
    return config;
  }, error=>{
    // 对请求错误做些什么
    return Promise.reject(error);
  });

// 2.2 响应拦截
// 添加响应拦截器---无限刷新令牌，无痛刷新，令牌刷新
instance.interceptors.response.use(response=> {
    // 对响应数据做点什么
	// 根据返回的状态码来做相对应的事情--10001  10006这个两个状态码需要做令牌刷新的功能
	// 1.获取到登录的账户和密码
	let res = response.data;
	if(res.errno === 200){
		return response;
	}else if(res.errno == 10001 || res.errno == 10006){
		if(sessionStorage.getItem("uname") && sessionStorage.getItem("password")){
			return login(response)
		}else{
			console.log('跳登录')
			router.replace({
				path:'/'
			})
		}
	}else{
		//反回除外的错误信息
		return response;
	}
	// 2.重新登录
	
    
  },error=>{
    // 对响应错误做点什么
    return Promise.reject(error);
  });
  async function login(response){
	  // 1.获取到账户和密码
	  let uname = sessionStorage.getItem("uname")
	  let password = sessionStorage.getItem("password")
	  let res = await instance.get('',{
		  params:{
			  _gp:"admin",
			  _mt:"login",
			  username: uname,
			  password: password,
			  verifyCode: "666666",
		  }
	  })
	  console.log(res)
	  if(response.data.errmsg == '成功'){
		// 3.把重新登录之后的token重新赋值给请求头（aysnc---await）
		var time = new Date(new Date().getTime() + 30 * 60 * 1000);
		sessionStorage.setItem('token', response.data.data,{
			expires:time
		})
		console.log('已更换令牌' + 1)
	  }
  }
  
export default instance
